When a data model is edited, it is often preferable that multiple users or model authors can work on the model in parallel. To provide an ability for several users to work on the same model, a modeling system needs to support modeling concurrency or modelers collaboration. It is also preferable that the modeling system can track the changes made on the model.
There exist various document management systems that allow multiple users to edit a single document, and merge edited documents into a single document. Those documents are typically simple and have no specific structure to be maintained.
A data model has a specific structure or schema. If multiple users modify the model and attempt to merge the modified models, the merged model needs to maintain the specific structure. It also needs to be able to deal with conflicts where one modeler changes conflict or overlap with another modeler's changes. These requirements complicate the merging techniques for data models. Merging techniques available for typical documents are not suitable for model merging.
There exists a model managing application which implements the concept of concurrency. Such a model managing application is however heavy and relies on a proprietary database which is common among the multiple users. Thus, this approach cannot be adapted to a different type of data models.
Another model managing application uses an object locking approach. Multiple editors of a model take out objects in the model exclusively and lock the objects as the objects are being edited. When one user locks or checks-out an object, the other editor of the model is not allowed to access the locked object. This means that as a model is being edited, objects are progressively checked out. Other users are only allowed to edit these objects after they have been checked in. This approach is practical only when multiple editors of a model modify different portions of the model. It also relies on objects not having interdependencies with other objects. For example, when one object is modified, it does not cause a modification of a different object.
Another model managing application divides a model into segments, and allows each user to check out each segment to work on the segment independently. This application uses a similar locking approach to the object locking approach. It assumes that changing one segment does not cause a change in a different segment. It also assumes a model can be neatly divided such that multiple modelers can work on each segment independently. Thus, in the real world, this approach is not always practical.
Either approach has limitations and does not support true multi-user modeling of the same objects in a model.
It is therefore desirable to provide a mechanism to support true multi-user modeling.